package view;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.UIManager;


import model.KundenModel;
import model.MenueObenModel;
import model.ProjektModel;
import model.StundenModel;

import controller.HauptfensterController;
import controller.KundenController;
import controller.MenueObenController;
import controller.ProjektController;
import controller.StundenController;
import datenbank.VerwKunden_DB;
import datenbank.VerwProjekte_DB;
import datenbank.VerwStunden_DB;

/**
 * 
 * @author Schweingruber Roger
 * 
 */
public class Main {
	// Datenbanken
	private VerwKunden_DB verwKunden_DB;
	private VerwProjekte_DB verwProjekte_DB;
	private VerwStunden_DB verwStunden_DB;

	// Fenster
	private JFrame frmHauptfenster;

	// Controller
	private KundenController kundenController;
	private MenueObenController menueObenController;
	private HauptfensterController hauptfensterController;
	private ProjektController projektController;
	private StundenController stundenController;

	// Model
	private KundenModel kundenModel;
	private MenueObenModel menueObenModel;
	private ProjektModel projektModel;
	private StundenModel stundenModel;

	/**
	 * 
	 */
	public Main() {

		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (Exception e) {

			e.printStackTrace();
		}

		// Datenbanken
		try {
			verwKunden_DB = new VerwKunden_DB();
		} catch (ClassNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		try {
			verwProjekte_DB = new VerwProjekte_DB();
		} catch (ClassNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		try {
			verwStunden_DB = new VerwStunden_DB();
		} catch (ClassNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		// Model
		kundenModel = new KundenModel(verwKunden_DB);
		menueObenModel = new MenueObenModel();
		projektModel = new ProjektModel(verwProjekte_DB);
		stundenModel = new StundenModel(verwStunden_DB);

		// Controller
		kundenController = new KundenController(kundenModel);
		menueObenController = new MenueObenController(menueObenModel);
		hauptfensterController = new HauptfensterController();
		projektController = new ProjektController(projektModel);
		stundenController = new StundenController(stundenModel);

		frmHauptfenster = new Hauptfenster(hauptfensterController,
				menueObenModel, kundenModel, kundenController, projektModel,
				projektController, stundenController, stundenModel, menueObenController);

		WindowAdapter windowListener = new WindowAdapter() {

			@Override
			public void windowClosing(WindowEvent e) {
				// TODO
				System.out.println("Wollen Sie wirklich beenden");
				System.exit(0);

			}
		};

		frmHauptfenster.addWindowListener(windowListener);
	}

	/**
	 * Main Task
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		new Main();
	}

}
